BSD

Застосовуваність: ця робота може бути використана як дидактичний матеріал курсу операційні системи кафедри теоретичної інформатики інституту формальної математики.
Об'єкт та предмет: операційні системи UNIX.
Мета та завдання: розкриття історії AT&T і Берклі Софтваре Дістрібушин.

Двадцять років Berkeley Unix. Від власності AT&T до вільного розповсюдження.

Рання історія

Кен Томпсон і Денніс Річі представили першу статтю про Unix на симпозіумі з принципів операційних систем в Університеті Пердью в листопаді 1973 року. Професор Боб Фабрі з Каліфорнійського університету в Берклі був присутній і відразу зацікавився отриманням копії системи. експериментувати в Берклі.

У той час у Берклі були лише великі мейнфрейми, які виконували пакетну обробку, тому першочерговим завданням було отримати PDP-11/45, придатний для роботи з актуальною на той час версією 4 Unix. Кафедра комп’ютерних наук у Берклі разом із кафедрою математики та статистикою змогли спільно придбати PDP-11/45. У січні 1974 року була доставлена стрічка версії 4, і Unix був встановлений аспірантом Кейтом Стендіфордом.

Хоча Кен Томпсон з Purdue не брав участі в установці в Берклі, як це було для більшості систем до того часу, його досвід незабаром знадобився, щоб визначити причину кількох дивних системних збоїв. Оскільки в Берклі був лише модем з акустичним зв’язком на 300 бод без функції автовідповіді, Томпсон викликав Стендіфорда в машинну кімнату і попросив його вставити телефон у модем; таким чином Томпсон міг віддалено налагоджувати аварійні дампи з Нью-Джерсі.

Багато збоїв були спричинені нездатністю контролера диска надійно виконувати перекриваються пошуки, всупереч документації. 11/45 Берклі була однією з перших систем, з якими Томпсон зіткнувся, які мали два диски на одному контролері! Дистанційне налагодження Томпсона було першим прикладом співпраці, яка виникла між Берклі та Bell Labs. Бажання дослідників з Labs поділитися своєю роботою з Берклі сприяло швидкому вдосконаленню програмного забезпечення, доступного в Берклі.

Хоча незабаром Unix надійно запрацював, коаліція інформатики, математики та статистики почала зіткнутися з проблемами; Math and Statistics хотіли запустити систему RSTS DEC. Після довгих дебатів було досягнуто компромісу, згідно з яким кожен відділ отримає восьмигодинну зміну; Unix працюватиме вісім годин, а потім шістнадцять годин RSTS. Для сприяння справедливості часові проміжки щодня змінювалися. Таким чином, Unix працював з 8 ранку до 4 вечора. одного дня, 16:00 до півночі наступного дня та опівночі до 8 ранку третього дня. Незважаючи на дивний графік, студенти, які вивчали курс «Операційні системи», воліли виконувати свої проекти на Unix, а не на пакетній машині.

Обидва професори Юджин Вонг і Майкл Стоунбрейкер були збиті обмеженнями пакетного середовища, тому їхній проект бази даних INGRES був однією з перших груп, які перейшли від пакетних машин до інтерактивного середовища, наданого Unix. Вони швидко виявили, що дефіцит машинного часу та дивні години на 11/45 нестерпні, тому навесні 1974 року вони придбали 11/40, що працює з новою версією 5. З першим розповсюдженням INGRES восени 1974 року , проект INGRES став першою групою на факультеті комп’ютерних наук, яка розповсюдила своє програмне забезпечення. Кілька сотень стрічок INGRES було відправлено протягом наступних шести років, що допомогло закріпити репутацію Берклі у проектуванні та створенні реальних систем.

Навіть після завершення проекту INGRES з 11/45, для студентів, що залишилися, все ще було недостатньо часу. Щоб зменшити нестачу, професори Майкл Стоунбрейкер і Боб Фабрі в червні 1974 року вирішили придбати два навчальні 11/45 для власного використання факультету комп’ютерних наук. На початку 1975 року гроші були отримані. Майже в той самий час DEC анонсувала 11/70, машину, яка, здавалося, була значно кращою за 11/45. Гроші на два 11/45 були об’єднані, щоб купити єдиний 11/70, який надійшов восени 1975 року. Одночасно з появою 11/70 Кен Томпсон вирішив взяти однорічну відпустку в якості запрошеного професора в Каліфорнійський університет у Берклі, його альма-матер. Томпсон разом із Джеффом Шрібманом і Бобом Крідлом представили останню версію Unix, версію 6, на щойно встановленому 11/70.

Також восени 1975 року прибули двоє непомічених аспірантів, Білл Джой і Чак Хейлі; вони обидва одразу зацікавилися новою системою. Спочатку вони почали працювати над системою Паскаль, яку Томпсон зламав разом, коли тинявся в машинному відділенні 11/70. Вони розширили та вдосконалили інтерпретатор Паскаля до такої міри, що він став системою програмування, яку вибирали студенти, завдяки чудовій схемі відновлення помилок і швидкому компілюванню та виконанню.

Із заміною телетайпів Model 33 екранними терміналами ADM-3 Джой і Гейлі почали відчувати себе в глухому куті через обмеження редактора ed. Працюючи з редактором на ім’я em, який вони отримали від професора Джорджа Кулуріса з коледжу Королеви Марії в Лондоні, вони працювали над створенням редактора рядків за раз.

Після відходу Кена Томпсона наприкінці літа 1976 року Джой і Хейлі почали цікавитися вивченням внутрішніх елементів ядра Unix. Під пильним оком Шрібмана вони спочатку встановили виправлення та покращення, надані на стрічці «п’ятдесяти змін» від Bell Labs. Навчившись маневрувати у вихідному коді, вони запропонували кілька невеликих удосконалень, щоб упорядкувати певні вузькі місця ядра.

Ранні дистрибуції

Тим часом інтерес до роботи з усунення помилок у компіляторі Pascal викликав запити на копії системи. На початку 1977 року Джой створив «Berkeley Software Distribution». Цей перший дистрибутив включав систему Pascal і, у незрозумілому підкаталозі джерела Pascal, редактор ex. Протягом наступного року Джой, виконуючи обов’язки секретаря з розповсюдження, розіслав близько тридцяти безкоштовних копій системи.

З появою деяких терміналів ADM-3a, які пропонують курсори з екранною адресацією, Джой нарешті зміг написати vi, принісши екранне редагування в Берклі. Незабаром він опинився в скрутному становищі. Як це часто буває в університетах, де немає грошей, старе обладнання ніколи не замінюється відразу. Замість коду підтримки для оптимізації оновлення кількох різних терміналів він вирішив консолідувати керування екраном за допомогою невеликого інтерпретатора для перемальовування екрана. Цей інтерпретатор був керований описом характеристик терміналу, спроба, яка зрештою стала termcap.

До середини 1978 року дистрибутив програмного забезпечення явно потребував оновлення. Система Pascal була помітно більш надійною завдяки відгукам від спільноти користувачів, що розширюється, і була розділена на два проходи, щоб її можна було запускати на PDP-11/34s. Результатом оновлення став «Другий розповсюдження програмного забезпечення Берклі», назву, яку швидко скоротили до 2BSD. Разом із вдосконаленою системою Pascal було включено vi та termcap для кількох терміналів. Знову Білл Джой одноосібно збирав розповсюдження, відповідав на телефонні дзвінки та включав відгуки користувачів у систему. Протягом наступного року було відправлено майже сімдесят п'ять стрічок. Хоча наступного року Джой перейшов до інших проектів, дистрибутив 2BSD продовжував розширюватися. Остаточна версія цього дистрибутива, 2.11BSD, є повною системою, яка використовується на сотнях PDP-11, які все ще працюють у різних куточках світу.

VAX UNIX

На початку 1978 року професор Річард Фейтман почав шукати машину з більшим адресним простором, на якій він міг би продовжити роботу над Macsyma (спочатку розпочату на PDP-10). Нещодавно анонсований VAX-11/780 відповідав вимогам і був доступний у межах бюджету. Фейтман і тринадцять інших викладачів склали пропозицію NSF, яку вони об’єднали з деякими коштами департаменту для придбання VAX.

Спочатку на VAX працювала операційна система DEC VMS, але відділ звик до середовища Unix і захотів продовжувати його використовувати. Отже, невдовзі після появи VAX Фейтман отримав копію порту 32/V Unix на VAX від Джона Райзера та Тома Лондона з Bell Labs.

Хоча 32/V забезпечував середовище Unix версії 7 на VAX, він не використовував можливості віртуальної пам’яті апаратного забезпечення VAX. Як і його попередники на PDP-11, це була система повністю на основі обміну. Для групи Macsyma в Берклі відсутність віртуальної пам’яті означала, що адресний простір процесу був обмежений розміром фізичної пам’яті, спочатку 1 мегабайт на новому VAX.

Щоб полегшити цю проблему, Фейтман звернувся до професора Доменіко Феррарі, члена факультету систем у Берклі, щоб дослідити можливість створення його групою системи віртуальної пам’яті для Unix. Озалп Бабаоглу, один із студентів Феррарі, збирався знайти якийсь спосіб реалізації робочої системи підкачки на VAX; його завдання було складним, оскільки VAX не вистачало опорних бітів.

Коли Бабаоглу наближався до завершення своєї першої версії реалізації, він звернувся до Білла Джоя за допомогою в розумінні тонкощів ядра Unix. Заінтригований підходом Бабаоглу, Джой приєднався до допомоги в інтеграції коду в 32/V, а потім у наступному налагодженні.

На жаль, у Берклі був лише один VAX як для розробки системи, так і для загального виробничого використання. Таким чином, протягом кількох тижнів під час різдвяних канікул толерантна спільнота користувачів по черзі входила в 32/V і «Virtual VAX/Unix». Часто їх робота в останній системі раптово припинялася, після чого через кілька хвилин з’являлося повідомлення про вхід 32/V. До січня 1979 року більшість помилок було усунено, і 32/V було віднесено в історію.

Джой побачив, що 32-розрядний VAX незабаром зробить 16-розрядний PDP-11 застарілим, і почав переносити програмне забезпечення 2BSD на VAX. Тоді як Пітер Кесслер і я портували систему Паскаль, Джой портував редактори ex і vi, оболонку C та безліч інших менших програм із дистрибутива 2BSD. До кінця 1979 року було зібрано повний розподіл. Цей дистрибутив включав ядро віртуальної пам'яті, стандартні утиліти 32/V і доповнення від 2BSD. У грудні 1979 року Joy відправив першу з майже сотні копій 3BSD, першого дистрибутива VAX з Берклі.

Остаточним випуском від Bell Laboratories був 32/V; після цього всі випуски Unix від AT&T, спочатку System III, а пізніше System V, керувалися іншою групою, яка наголошувала на стабільних комерційних випусках. З комерціалізацією Unix дослідники з Bell Laboratories більше не могли виступати в якості центру обміну інформацією для поточних досліджень Unix. У міру того, як дослідницьке співтовариство продовжувало модифікувати систему Unix, воно виявило, що потрібна організація, яка могла б випускати дослідницькі випуски. Завдяки своїй ранній участі в Unix та історії випуску інструментів на базі Unix Berkeley швидко ввійшов у роль, яку раніше надавали Labs.

DARPA

Тим часом в офісах планувальників Агентства передових оборонних дослідницьких проектів (DARPA) велися дискусії, які мали великий вплив на роботу в Берклі. Одним із перших успіхів DARPA було створення загальнонаціональної комп’ютерної мережі, яка об’єднала всі їхні основні дослідницькі центри. У той час вони виявили, що багато комп’ютерів у цих центрах добігають кінця свого корисного терміну експлуатації та їх потрібно було замінити. Найважчими витратами заміни було перенесення дослідницького програмного забезпечення на нові машини. Крім того, багато сайтів не могли поділитися своїм програмним забезпеченням через різноманіття апаратного забезпечення та операційних систем.

Вибір одного постачальника апаратного забезпечення був непрактичним через суттєві відмінності обчислювальних потреб дослідницьких груп і небажаність залежності від одного виробника. Таким чином, планувальники DARPA вирішили, що найкращим рішенням є уніфікація на рівні операційних систем. Після тривалого обговорення стандартом було обрано Unix через доведену портативність.

Восени 1979 року Боб Фабрі відповів на зацікавленість DARPA у переході на Unix, написавши пропозицію про те, щоб Берклі розробив вдосконалену версію 3BSD для використання спільнотою DARPA. Фабрі відніс копію своєї пропозиції на нараду підрядників DARPA з обробки зображень і VLSI, а також представників Bolt, Beranek і Newman, розробників ARPAnet. Існували певні застереження щодо того, чи може Берклі створити робочу систему; однак випуск 3BSD у грудні 1979 року розвіяв більшість сумнівів.

Завдяки все більшій репутації випуску 3BSD для підтвердження своїх претензій, Боб Фабрі зміг отримати 18-місячний контракт з DARPA, починаючи з квітня 1980 року. Цей контракт мав додати функції, необхідні підрядникам DARPA. Під егідою цього контракту Боб Фабрі засновує організацію, яку охрестили Дослідницькою групою комп’ютерних систем, або скорочено CSRG. Він негайно найняв Лауру Тонг для адміністрування проекту. Фабрі звернув увагу на пошук керівника проекту, який би керував розробкою програмного забезпечення. Фабрі припустив, що оскільки Джой щойно отримав ступінь доктора філософії. кваліфікаційного іспиту, він скоріше зосередиться на отриманні ступеня, ніж обійме посаду розробника програмного забезпечення. Але у Джой були інші плани. Одного вечора на початку березня він зателефонував Фабрі додому, щоб висловити зацікавленість взяти на себе відповідальність за подальший розвиток Unix. Незважаючи на здивування пропозицією, Фабрі знадобилося небагато часу, щоб погодитися.

Проект стартував миттєво. Тонг створив систему розподілу, яка могла обробляти більший обсяг замовлень, ніж попередні розподіли Joy. Фабрі вдалося домовитися з Бобом Гаффі з AT&T і юристами Каліфорнійського університету, щоб офіційно випустити Unix на прийнятних для всіх умовах. Джой включив контроль завдань від Джима Калпа, додав автоматичне перезавантаження, блочну файлову систему розміром 1 КБ і підтримку найновішої машини VAX, VAX-11/750. У жовтні 1980 року відшліфований дистрибутив, який також включав компілятор Pascal, систему Franz Lisp і покращену систему обробки пошти, був випущений як 4BSD. За дев'ять місяців існування було відвантажено близько 150 примірників. Ліцензійна домовленість була заснована на кожній установі, а не на кожній машині; таким чином розповсюдження працювало приблизно на 500 машинах.

Зі все більш широким розповсюдженням і видимістю Berkeley Unix почали з'являтися кілька критиків. Девід Каштан зі Стенфордського науково-дослідного інституту написав статтю, в якій описав результати тестів, які він запустив як на VMS, так і на Berkeley Unix. Ці контрольні тести показали серйозні проблеми з продуктивністю системи Unix для VAX. Відклавши свої майбутні плани на кілька місяців, Джой систематично почав налаштовувати ядро. За кілька тижнів він написав спростувальну статтю, в якій доводилося, що тести Kashtan можуть працювати так само добре на Unix, як і на VMS.

Замість того, щоб продовжувати постачати 4BSD, налагоджену систему з додаванням коду автоматичної конфігурації Роберта Ельца було випущено як 4.1BSD у червні 1981 року. За дворічний термін її існування було відправлено близько 400 дистрибутивів. Початковий намір полягав у тому, щоб назвати це випуском 5BSD; однак, були заперечення з боку AT&T, що клієнти можуть плутати між їхнім комерційним випуском Unix, System V, і випуском Берклі під назвою 5BSD. Отже, щоб вирішити проблему, Берклі погодився змінити схему іменування для майбутніх випусків, щоб залишитися на 4BSD і просто збільшити другорядне число.

4.2BSD

З випуском 4.1BSD більшість шуму щодо продуктивності згасла. DARPA було настільки задоволене результатами першого контракту, що новий дворічний контракт був наданий Берклі з фінансуванням, майже в п’ять разів більшим, ніж початковий. Половина грошей пішла на проект Unix, решта – іншим дослідникам у відділі комп’ютерних наук. Контракт передбачав виконання великої роботи над системою, щоб дослідницька спільнота DARPA могла краще виконувати свою роботу.

Виходячи з потреб спільноти DARPA, було встановлено цілі та розпочато роботу з визначення модифікацій системи. Зокрема, очікується, що нова система включатиме швидшу файлову систему, яка збільшить пропускну здатність до швидкості доступної дискової технології, підтримуватиме процеси з вимогами до багатогігабайтного адресного простору, забезпечуватиме гнучкі засоби міжпроцесного зв’язку, які дозволять дослідникам виконувати роботу в розподілених системах , а також буде інтегрувати мережеву підтримку, щоб машини, на яких працює нова система, могли легко брати участь у ARPAnet.

Щоб допомогти у визначенні нової системи, Дуейн Адамс, контрактний монітор Берклі в DARPA, сформував групу, відому як «керівний комітет», щоб допомогти керувати проектною роботою та забезпечити задоволення потреб дослідницького співтовариства. Цей комітет збирався двічі на рік у період з квітня 1981 року по червень 1983 року. До нього входили Боб Фабрі, Білл Джой і Сем Леффлер з Каліфорнійського університету в Берклі; Алан Немет і Роб Гурвіц з Bolt, Beranek і Newman; Денніс Річі з Bell Laboratories; Кіт Ланц зі Стенфордського університету; Рік Рашид з Університету Карнегі-Меллона; Берт Холстед з Массачусетського технологічного інституту; Ден Лінч з Інституту інформаційних наук; Дуейн Адамс і Боб Бейкер з DARPA; і Джеррі Попек з Каліфорнійського університету в Лос-Анджелесі. Починаючи з 1984 року, ці зустрічі були замінені семінарами, які були розширені, щоб включити набагато більше людей.

У липні 1981 року початковий документ із пропозицією об’єктів, які слід включити в нову систему, був розісланий керівному комітету та іншим людям за межами Берклі, що викликало багато тривалих дебатів. Влітку 1981 року я приєднався до CSRG і взявся за впровадження нової файлової системи. Протягом літа Джой зосередився на впровадженні прототипу міжпроцесних комунікаційних засобів. Восени 1981 року Сем Леффлер приєднався до CSRG як штатний співробітник для роботи з Біллом Джоєм.

Коли Роб Гурвіц випустив ранню реалізацію протоколів TCP/IP для Берклі, Джой інтегрував її в систему та налаштував її продуктивність. Під час цієї роботи Джою та Леффлеру стало зрозуміло, що нова система потребуватиме підтримки не лише стандартних мережевих протоколів DARPA. Таким чином, вони переробили внутрішню структуру програмного забезпечення, удосконаливши інтерфейси, щоб можна було використовувати кілька мережевих протоколів одночасно.

Після завершення внутрішньої реструктуризації та інтеграції протоколів TCP/IP із прототипом засобів IPC було створено кілька простих додатків, які надають локальним користувачам доступ до віддалених ресурсів. Ці програми, rcp, rsh, rlogin і rwho, були призначені як тимчасові інструменти, які згодом будуть замінені більш розумними засобами (звідси використання розрізнювального префікса "r"). Ця система під назвою 4.1a була вперше поширена в квітні 1982 року для локального використання; ніколи не планувалося, що вона матиме широке поширення, хоча контрабандні копії системи поширювалися, оскільки сайти нетерпляче чекали випуску 4.2.

Система 4.1a застаріла задовго до того, як була завершена. Проте відгуки користувачів надали цінну інформацію, яка була використана для створення переглянутої пропозиції щодо нової системи під назвою «Керівництво по системі 4.2BSD». Цей документ був розповсюджений у лютому 1982 року та містив стислий опис запропонованих інтерфейсів користувача для системних засобів, які мали бути реалізовані у 4.2BSD.

Одночасно з розробкою 4.1a я завершив впровадження нової файлової системи і до червня 1982 року повністю інтегрував її в ядро 4.1a. Отримана система отримала назву 4.1b і працювала лише на кількох вибраних машинах розробки в Берклі. Джой відчув, що враховуючи значні зміни в системі, найкраще уникати навіть локального розповсюдження, особливо тому, що для перетворення з 4.1a на 4.1b потрібно скинути та відновити файлові системи кожної машини. Коли файлова система виявилася стабільною, Леффлер додав нові системні виклики, пов’язані з файловою системою, а Джой працював над переглядом засобів міжпроцесного зв’язку.

Пізньої весни 1982 року Джой оголосив, що приєднується до Sun Microsystems. Протягом літа він розділив свій час між Sun і Berkeley, витрачаючи більшу частину свого часу на шліфування своїх змін до засобів міжпроцесного зв’язку та реорганізацію вихідних кодів ядра Unix для ізоляції машинних залежностей. Після відходу Джой Леффлер взяв на себе відповідальність за завершення проекту. Певні терміни вже були встановлені, а реліз було обіцяно спільноті DARPA на весну 1983 року. Враховуючи обмеження часу, роботу, що залишилася для завершення випуску, було оцінено та визначено пріоритети. Зокрема, удосконалення віртуальної пам’яті та найскладніші частини дизайну міжпроцесного зв’язку були віднесені до низького пріоритету (а пізніше повністю відкладені). Крім того, у зв’язку з тим, що впровадженню минуло більше року, а очікування спільноти Unix зросли, було вирішено створити проміжний випуск, щоб затримати людей до завершення остаточної системи. Ця система під назвою 4.1c була поширена в квітні 1983 року; багато постачальників використовували цей випуск для підготовки до портів 4.2 на своє обладнання. Полін Шварц було найнято, щоб взяти на себе обов’язки з розповсюдження, починаючи з випуску 4.1c.

У червні 1983 року Боб Фабрі передав адміністративний контроль над CSRG професорам Доменіко Феррарі та Сьюзен Грем, щоб розпочати відпустку, вільну від шаленого ритму попередніх чотирьох років. Leffler продовжив доопрацювання системи, впровадивши нові сигнальні засоби, додавши мережеву підтримку, переробивши автономну систему введення/виведення, щоб спростити процес інсталяції, інтегрувавши дискові квоти від Роберта Ельца, оновивши всю документацію та відстежуючи помилки з випуску 4.1c. У серпні 1983 року система була випущена як 4.2BSD.

Коли Леффлер залишив Берклі до Lucasfilm після завершення 4.2, його замінив Майк Карелс. Попередній досвід Карелса з розповсюдженням програмного забезпечення 2.9BSD PDP-11 став ідеальною основою для його нової роботи. Після закінчення доктора філософії. у грудні 1984 року я приєднався до Майка Карелса на повний робочий день у CSRG.

Популярність 4.2BSD була вражаючою; протягом вісімнадцяти місяців було видано понад 1000 ліцензій на сайти. Таким чином, було відправлено більше копій 4.2BSD, ніж усіх попередніх дистрибутивів програмного забезпечення Берклі разом узятих. Більшість постачальників Unix постачали систему 4.2BSD, а не комерційну System V від AT&T. Причина полягала в тому, що System V не мала ні мережі, ні файлової системи Berkley Fast. BSD-версія Unix утримувала свою домінуючу комерційну позицію лише кілька років, перш ніж повернутися до своїх витоків. Оскільки мережеві та інші вдосконалення 4.2BSD були інтегровані у випуск системи V, постачальники зазвичай поверталися до нього. Однак пізніші розробки BSD продовжували включатися в System V.

4.3BSD

Як і у випадку з випуском 4.1BSD, критика була швидкою. Більшість скарг полягала в тому, що система працювала надто повільно. Проблема, як не дивно, полягала в тому, що нові засоби не були налаштовані, і багато структур даних ядра не були добре пристосовані для нового використання. Перший рік, який ми з Карелсом працювали над проектом, ми витратили на налаштування та шліфування системи.

Після двох років роботи, витраченої на налаштування системи та вдосконалення мережевого коду, ми оголосили на конференції Usenix у червні 1985 року, що плануємо випустити 4.3BSD пізніше цього літа. Однак наші плани випуску були раптово зупинені людьми з BBN. Вони правильно зауважили, що ми ніколи не оновлювали 4.2BSD остаточною версією їхнього мережевого коду. Швидше, ми все ще використовували сильно зламаний початковий прототип, який вони дали нам багато років тому. Вони поскаржилися в DARPA, що Berkeley мав реалізувати інтерфейс, тоді як BBN мав реалізувати протокол, тому Berkeley повинен замінити код TCP/IP у 4.3BSD реалізацією BBN.

Майк Карелс отримав код BBN і провів оцінку роботи, виконаної з моменту створення прототипу, який було передано Берклі. Він вирішив, що найкращим планом було б включити хороші ідеї з коду BBN в кодову базу Берклі, але не замінювати базу коду Берклі. Причиною збереження бази коду Berkeley було те, що вона отримала значні тести та покращення завдяки широкому розповсюдженню в 4.2BSD. Проте в якості компромісу він запропонував включити обидві реалізації в дистрибутив 4.3BSD і дозволити користувачам вибирати, яку використовувати в своєму ядрі.

Переглянувши рішення Майка Карелса, DARPA вирішило, що випуск двох кодових баз призведе до непотрібних проблем взаємодії, і що слід випустити лише одну реалізацію. Щоб вирішити, яку кодову базу використовувати, вони передали обидва коди Майку Муузе з Дослідницької лабораторії балістики, якого Берклі та BBN розглядали як незалежну третю сторону. Після місяця оцінювання з'явилося повідомлення про те, що код Берклі був ефективнішим, але код BBN краще справлявся із заторами. Вирішальним було те, що код Berkeley бездоганно провів усі тести, тоді як код BBN панікував за певних стресових умов. Остаточне рішення DARPA полягало в тому, що 4.3BSD буде дотримуватися кодової бази Берклі.

Відшліфована система 4.3BSD була нарешті випущена в червні 1986 року. Як і очікувалося, вона придушила багато скарг на продуктивність, подібно до того, як випуск 4.1BSD придушив багато скарг щодо 4BSD. Хоча більшість постачальників почали перехід назад до System V, значні частини 4.3BSD були перенесені в їхні системи, зокрема мережеву підсистему.

У жовтні 1986 року Кіт Бостік приєднався до CSRG. Однією з умов його працевлаштування було дозволити йому завершити проект, над яким він працював на попередній роботі, а саме портувати 4.3BSD на PDP-11. Хоча і Карелс, і я вважали, що неможливо отримати систему, яка компілюється до 250 Кбайт на VAX, щоб уміститись у 64-Кбайтному адресному просторі PDP-11, ми погодилися, що Бостік міг би завершити свої спроби зробити це. . На наш превеликий подив, порт було виконано успішно, використовуючи складний набір оверлеїв і допоміжних станів процесора, знайдених на PDP-11. Результатом став випуск 2.11BSD, створений Кейсі Лідом і Бостіком, який все ще використовується на деяких з останніх PDP-11, що все ще виробляються в 1998 році.

Тим часом ставало все більш очевидним, що архітектура VAX добігає кінця свого життя і що настав час почати розглядати інші машини для запуску BSD. Нова багатообіцяюча архітектура того часу була створена компанією Computer Consoles, Incorporated і отримала назву Power 6/32. На жаль, архітектура загинула, коли компанія вирішила змінити свій стратегічний напрямок. Проте вони надали CSRG кілька машин, які дозволили нам завершити роботу, розпочату Біллом Джоєм, із розділення ядра BSD на машинно-залежну та машинно-незалежну частини. Результатом цієї роботи було випущено 4.3BSD-Tahoe у червні 1988 року. Назва Tahoe походить від назви розробки, використаної Computer Consoles, Incorporated, для машини, яку вони зрештою випустили як Power 6/32. Незважаючи на те, що термін експлуатації машинної підтримки Power 6/32 був коротким, робота з розділення ядра на машинно-незалежні та машинно-залежні частини виявилася надзвичайно цінною, оскільки BSD було перенесено на численні інші архітектури.

Net/1

До випуску 4.3BSD-Tahoe усі одержувачі BSD повинні були спочатку отримати ліцензію на джерело AT&T. Це було тому, що системи BSD ніколи не були випущені Берклі лише у двійковому форматі; дистрибутиви завжди містили повний вихідний код для кожної частини системи. Історія системи Unix і BSD, зокрема, показала силу доступу до джерела для користувачів. Замість того, щоб пасивно використовувати систему, вони активно працювали над виправленням помилок, покращенням продуктивності та функціональності та навіть додаванням абсолютно нових функцій.

Із зростанням вартості вихідних ліцензій AT&T постачальники, які хотіли створювати автономні мережеві продукти на базі TCP/IP для ринку ПК, використовуючи код BSD, вважали, що витрати на бінарні файли непомірно високі. Тому вони попросили Берклі розкрити мережевий код і утиліти та надати їх згідно з умовами ліцензування, які не потребують ліцензії на джерело AT&T. Мережевий код TCP/IP явно не існував у 32/V і тому був повністю розроблений Берклі та його учасниками. Мережевий код BSD і допоміжні утиліти були випущені в червні 1989 року як Networking Release 1, перший безкоштовно розповсюджуваний код від Берклі.

Умови ліцензування були ліберальними. Ліцензіат може оприлюднити модифікований або незмінений код у вихідній чи двійковій формі без обліку чи роялті Берклі. Єдина вимога полягала в тому, щоб повідомлення про авторські права у вихідному файлі залишалися недоторканими, а продукти, які включили код, вказували у своїй документації, що продукт містив код Каліфорнійського університету та його учасників. Хоча Берклі стягував плату в 1000 доларів за отримання касети, будь-хто міг вільно отримати копію від будь-кого, хто її вже отримав. Дійсно, кілька великих сайтів розмістили його для анонімного ftp незабаром після його випуску. З огляду на те, що він був настільки легко доступним, CSRG був радий, що кілька сотень організацій придбали копії, оскільки їхні гонорари допомогли фінансувати подальший розвиток.

4.3BSD-Reno

Тим часом розробка базової системи тривала. Система віртуальної пам'яті, інтерфейс якої вперше був описаний у документі про архітектуру 4.2BSD, нарешті стала реалізованою. Як це часто траплялося з CSRG, ми завжди намагалися знайти існуючий код для інтеграції, а не писати щось з нуля. Тож замість того, щоб розробляти нову систему віртуальної пам’яті, ми шукали існуючі альтернативи. Першим нашим вибором була система віртуальної пам’яті, яка з’явилася в SunOS компанії Sun Microsystem. Хоча були певні дискусії щодо того, що Sun внесла код у Берклі, з цих переговорів нічого не вийшло. Тож ми вибрали наш другий вибір, який полягав у включенні системи віртуальної пам’яті з операційної системи MACH, створеної в Університеті Карнегі-Меллона. Майк Гіблер з Університету Юти об’єднав основну технологію від MACH з інтерфейсом користувача, описаним у посібнику з архітектури 4.2BSD (який також був інтерфейсом, який використовував SunOS).

Іншим важливим доповненням до системи на той час була версія мережевої файлової системи (NFS), сумісна з Sun. Знову CSRG зміг уникнути написання фактичного коду NFS, натомість отримавши реалізацію, виконану Ріком Маклемом з Університету Геулфа в Канаді.

Хоча ми ще не мали повного набору функцій 4.4BSD, готового до доставки, CSRG вирішив зробити проміжний випуск, щоб отримати додаткові відгуки та досвід щодо двох основних нових доповнень до системи. Цей ліцензійний проміжний випуск називався 4.3BSD-Reno і був випущений на початку 1990 року. Випуск був названий на честь великого грального міста в Неваді, щоб побіжне нагадування одержувачам, що запуск проміжного випуску — це трохи азартна гра.

Net/2

Під час однієї з наших щотижневих групових зустрічей у CSRG Кейт Бостік підняв тему популярності мережевого випуску, який вільно розповсюджується, і запитав про можливість створення розширеного випуску, який містив би більше коду BSD. Ми з Майком Карелсом зауважили Бостіку, що випуск великих частин системи — це величезне завдання, але ми погодилися, що якщо він зможе розібратися, як впоратися з повторним впровадженням сотень утиліт і величезної бібліотеки C, тоді ми візьмемося за ядро. Ми з Карелсом приватно думали, що на цьому дискусія закінчиться.

Не злякавшись, Bostic запровадив техніку масової розробки на основі мережі. Він закликав людей переписати утиліти Unix з нуля виключно на основі їх опублікованих описів. Їхньою єдиною компенсацією було б, щоб їхнє ім’я було внесено до списку співавторів Берклі поруч із назвою комунального підприємства, яке вони переписали. Внески почали надходити повільно і в основному на тривіальні комунальні послуги. Але в міру того, як список завершених утиліт зростав і Bostic продовжував відстоювати внески на публічних заходах, таких як Usenix, рівень внесків продовжував зростати. Незабаром список перевищив сотню комунальних послуг, і протягом 18 місяців майже всі важливі комунальні послуги та бібліотеки були переписані.

З гордістю Бостік увійшов у мій і Майк Карелс кабінет зі списком у руках, бажаючи знати, як у нас справи з ядром. Змирившись із нашим завданням, Карелс, Бостік і я витратили наступні кілька місяців, переглядаючи весь дистрибутив, файл за файлом, видаляючи код, який виник у випуску 32/V. Коли пил влягся, ми виявили, що залишилося лише шість файлів ядра, які все ще були заражені і які не можна було тривіально переписати. Хоча ми розглядали можливість переписати ці шість файлів, щоб ми могли випустити повну систему, ми замість цього вирішили випустити лише те, що у нас було. Однак ми попросили дозволу на наш розширений випуск у людей, які стоять вище в адміністрації університету. Після тривалих внутрішніх дебатів і перевірки нашого методу визначення пропрієтарного коду нам дали добро на випуск.

Нашою початковою думкою було придумати абсолютно нову назву для нашого другого випуску, який вільно поширюється. Однак ми розглядали отримання повністю нової ліцензії, написаної та затвердженої юристами університету, як непотрібне витрачання ресурсів і затримку часу. Отже, ми вирішили назвати новий випуск Networking Release 2, оскільки ми могли просто переглянути схвалену ліцензійну угоду Networking Release 1. Таким чином, наш другий значно розширений реліз для вільного розповсюдження почався в червні 1991 року. Умови розповсюдження та вартість були такими ж, як умови та вартість першого мережевого випуску. Як і раніше, кілька сотень осіб і організацій заплатили 1000 доларів США, щоб отримати розповсюдження від Берклі.

Усунення розриву від дистрибутива Networking Release 2 до повністю функціональної системи не зайняло багато часу. Протягом шести місяців після випуску Білл Джолітц написав заміни для шести відсутніх файлів. Він негайно випустив повністю скомпільовану та завантажувальну систему для архітектури ПК на основі 386, яку він назвав 386/BSD. Розповсюдження Jolitz 386/BSD майже повністю здійснювалося в Мережі. Він просто виставив його на анонімний FTP і дозволив усім, хто хотів, завантажити його безкоштовно. За кілька тижнів у нього з’явилася величезна кількість прихильників.

На жаль, вимоги щодо збереження роботи на повний робочий день означали, що Джоліц не міг приділяти час, необхідний, щоб не відставати від потоку виправлень помилок і вдосконалень 386/BSD. Отже, протягом кількох місяців після випуску 386/BSD група завзятих користувачів 386/BSD сформувала групу NetBSD, щоб об’єднати свої колективні ресурси для підтримки та подальшого вдосконалення системи. Їх випуски стали відомі як дистрибутив NetBSD. Група NetBSD вирішила наголосити на підтримці якомога більшої кількості платформ і продовжила розвиток стилю дослідження, проведеного CSRG. До 1998 року їх розповсюдження здійснювалося виключно через мережу; не було доступно для розповсюдження. Їхня група продовжує орієнтуватися в першу чергу на злісних технічних користувачів. Більше інформації про проект NetBSD можна знайти на http://www.netbsd.org.

Група FreeBSD була сформована через кілька місяців після групи NetBSD зі статутом підтримки лише архітектури ПК і переслідування більшої та менш технічно просунутої групи користувачів, подібно до Linux. Вони створили складні інсталяційні сценарії та почали поставляти свою систему на недорогому CD-ROM. Поєднання простоти встановлення та інтенсивної реклами в мережі та на великих торгових виставках, таких як Comdex, призвело до швидкої, великої кривої зростання. Безумовно, FreeBSD на даний момент має найбільшу встановлену базу серед усіх систем, отриманих від Release 2.

FreeBSD також підняла хвилю популярності Linux, додавши режим емуляції Linux, який дозволяє запускати бінарні файли Linux на платформі FreeBSD. Ця функція дозволяє користувачам FreeBSD використовувати постійно зростаючий набір програм, доступних для Linux, зберігаючи надійність, надійність і продуктивність системи FreeBSD. Група нещодавно відкрила FreeBSD Mall (http://www.freebsdmall.com), який об’єднує багато частин спільноти FreeBSD, включаючи консультаційні послуги, похідні продукти, книги та інформаційний бюлетень.

У середині 1990-х OpenBSD відокремилася від групи NetBSD. Їхня технічна спрямованість була спрямована на підвищення безпеки системи. Їхня маркетингова мета полягала в тому, щоб зробити систему простішою у використанні та більш доступною. Таким чином, вони почали виробляти та продавати компакт-диски з багатьма ідеями щодо простоти встановлення з дистрибутива FreeBSD. Більше інформації про проект OpenBSD можна знайти на http://www.openbsd.org.

Позов

На додаток до груп, організованих для вільного розповсюдження систем, створених на основі стрічки Networking Release 2, була створена компанія Berkeley Software Design, Incorporated (BSDI) для розробки та розповсюдження комерційно підтримуваної версії коду. (Додаткову інформацію про BSDI можна знайти на http://www.bsdi.com.) Як і інші групи, вони почали з додавання шести відсутніх файлів, які Білл Джолітц написав для свого випуску 386/BSD. У січні 1992 року компанія BSDI почала продавати свою систему, включаючи вихідні та двійкові файли, за 995 доларів. Вони почали розміщувати рекламу, рекламуючи свою 99% знижку від ціни, що стягується за вихідні системи System V плюс двійкові системи. Зацікавленим читачам було запропоновано телефонувати за номером 1-800-ITS-Unix.

Невдовзі після того, як BSDI розпочала свою кампанію з продажу, вони отримали листа від Unix System Laboratories (USL) (дочірня компанія AT&T, яка переважає у власності, відокремилася для розробки та продажу Unix). У листі вимагалося припинити просування свого продукту як Unix і, зокрема, припинити використовувати оманливий номер телефону. Незважаючи на те, що номер телефону було негайно скинуто, а рекламу змінили, щоб пояснити, що продукт не є Unix, USL все одно був незадоволений і подав позов, щоб заборонити BSDI продавати їхній продукт. У позові стверджувалося, що продукт BSDI містить власний код USL і комерційну таємницю. USL намагався отримати заборону на припинення продажів BSDI до вирішення позову, стверджуючи, що вони зазнають непоправної шкоди через втрату своїх комерційних таємниць, якщо розповсюдження BSDI продовжиться.

Під час попереднього слухання судової заборони BSDI стверджував, що вони просто використовували джерела, які вільно розповсюджуються Каліфорнійським університетом, а також шість додаткових файлів. Вони були готові обговорити вміст будь-якого з шести доданих файлів, але не вірили, що вони повинні нести відповідальність за файли, які поширює Каліфорнійський університет. Суддя погодився з аргументом BSDI і сказав USL, що їм доведеться повторно викласти свою скаргу виключно на основі шести файлів, інакше він відхилить її. Усвідомлюючи, що їм буде важко побудувати справу лише з шести файлів, USL вирішила повторно подати позов як проти BSDI, так і проти Каліфорнійського університету. Як і раніше, USL вимагала судової заборони на доставку Networking Release 2 від університету та продуктів BSDI.

У зв’язку з тим, що до слухання щодо судової заборони залишилося лише кілька тижнів, підготовка почалася серйозно. Усі члени CSRG були звільнені, як і майже всі працівники BSDI. Між адвокатами літали туди-сюди брифи, контрзаписки та контрзаписки. Нам з Кітом Бостіком особисто довелося написати кілька сотень сторінок матеріалу, який потрапив у різні записки.

У грудні 1992 року Дікінсон Р. Дебевуаз, окружний суддя США в Нью-Джерсі, вислухав аргументи на користь судової заборони. Незважаючи на те, що судді зазвичай приймають рішення щодо запитів про судову заборону негайно, він вирішив взяти це до уваги. У п’ятницю приблизно через шість тижнів він опублікував сорокасторінковий висновок, у якому заперечував судову заборону та викидав усі скарги, крім двох. Дві інші скарги були звужені до останніх авторських прав і можливості втрати комерційної таємниці. Він також запропонував, щоб справа розглядалася в судовій системі штату, а потім у федеральній судовій системі.

Університет Каліфорнії сприйняв натяк і наступного понеділка вранці поспішив до суду штату Каліфорнія із зустрічним позовом проти USL. Подавши першу заяву в Каліфорнії, Університет визначив місце будь-якого подальшого державного судового позову. Конституційний закон вимагає, щоб подання всіх заяв штату здійснювалося в одному штаті, щоб запобігти тому, щоб учасник судового процесу з глибокими кишенями знекровив опонента, порушивши проти нього п’ятдесят справ у кожному штаті. Результатом стало те, що якби USL захотіла вжити будь-яких заходів проти університету в судах штату, вони були б змушені зробити це в Каліфорнії, а не в своєму рідному штаті Нью-Джерсі.

Позов Університету стверджував, що USL не виконала своїх зобов’язань надати Університету належне кредитування за використання коду BSD у System V, як того вимагає ліцензія, яку вони підписали з Університетом. Якщо претензію буде визнано обґрунтованою, Університет звернувся з проханням змусити USL передрукувати всю їхню документацію з додаванням відповідних кредитів, повідомити всіх своїх ліцензіатів про їх недогляд і розмістити повносторінкову рекламу в основних виданнях, таких як The Wall Street Journal і журнал Fortune сповіщають діловий світ про свій ненавмисний недогляд.

Незабаром після подання до суду штату USL було куплено в AT&T компанією Novell. Генеральний директор Novell Рей Нурда публічно заявив, що він воліє конкурувати на ринку, ніж у суді. До літа 1993 року почалися переговори про врегулювання. На жаль, обидві сторони закопалися настільки глибоко, що переговори йдуть повільно. Завдяки подальшій підтримці Рея Нурди з боку USL багато проблем було усунено, і в січні 1994 року нарешті було досягнуто врегулювання. Результатом стало те, що три файли було видалено з 18 000, які складали Networking Release 2, і декілька незначних змін внесено до інших файлів. Крім того, Університет погодився додати авторські права USL на близько 70 файлів, хоча ці файли продовжували вільно поширюватися.

4.4BSD

Нещодавно благословенний випуск отримав назву 4.4BSD-Lite і був випущений у червні 1994 року на умовах, ідентичних тим, які використовувалися для мережевих випусків. Зокрема, умови дозволяють безкоштовне розповсюдження у вихідній та двійковій формі лише за умови, що авторські права Університету залишаються недоторканими та що Університет отримує кредит, коли інші використовують код. Одночасно вся система була випущена як 4.4BSD-Encumbered, яка все ще вимагала від одержувачів ліцензії на джерело USL.

Угода також передбачала, що USL не буде подавати до суду на жодну організацію, яка використовує 4.4BSD-Lite як основу для своєї системи. Таким чином, усі групи BSD, які створювали випуски на той час, BSDI, NetBSD і FreeBSD, повинні були перезапустити свою кодову базу з вихідними кодами 4.4BSD-Lite, у які вони потім об’єднали свої покращення та вдосконалення. Хоча ця повторна інтеграція спричинила короткочасну затримку в розробці різних систем BSD, це було приховане благословення, оскільки воно змусило всі різні групи повторно синхронізуватися з трьома роками розробки, які відбулися в CSRG після випуску Networking Випуск 2.

4.4BSD-Lite, Net/2

Гроші, отримані від випусків 4.4BSD-Encumbered і 4.4BSD-Lite, були використані для фінансування часткової роботи з інтеграції виправлень помилок і покращень. Ці зміни тривали протягом двох років, поки кількість звітів про помилки та вдосконалення функцій не зменшилася до краплі. Остаточний набір змін було випущено як 4.4BSD-Lite, Release 2 у червні 1995 року. Більшість із цих змін зрештою потрапили в вихідні коди інших систем.

Після випуску 4.4BSD-Lite Release 2 CSRG було розпущено. Після майже двадцяти років пілотування корабля BSD ми відчули, що настав час дозволити іншим зі свіжими ідеями та безмежним ентузіазмом взяти верх. Хоча може здатися, що найкраще мати єдиний централізований орган, який наглядатиме за розвитком системи, ідея мати кілька груп з різними статутами гарантує, що буде випробувано багато різних підходів. Оскільки система випущена у початковій формі, найкращі ідеї можуть бути легко підібрані іншими групами. Якщо одна група стає особливо ефективною, вона з часом може стати домінуючою системою.

Сьогодні рух за програмне забезпечення з відкритим кодом завойовує все більшу увагу та повагу. Хоча система Linux є, мабуть, найвідомішою, близько половини утиліт, які входять до неї, взято з дистрибутива BSD. Дистрибутиви Linux також сильно залежать від компілятора, налагоджувачів та інших інструментів розробки, створених Free Software Foundation. Разом CSRG, Фонд вільного програмного забезпечення та розробники ядра Linux створили платформу, з якої було запущено рух програмного забезпечення з відкритим кодом. Я пишаюся тим, що мав можливість допомогти піонером руху програмного забезпечення з відкритим кодом. Я з нетерпінням чекаю того дня, коли це стане кращим способом розробки та придбання програмного забезпечення для користувачів і компаній у всьому світі.